package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.List;

/**
 * 非法营运车分析服务
 */
public interface DubboAnalyzeIllegalTaxiService {

	/**
	 * 对非法营运车进行分析并获取结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param illegalClass 非法营运分类
	 * @param poIntegers 活跃区域，以数组表示的点位集合
	 * @param month 分析月份 2017-4
	 * @param page 分页
	 * @return Page &lt; IllegalTaxiVehicleDto &gt; ：包含非法营运车信息 的分页集合
	 */
	public ResultPojo analyzeIllegalTaxiVehicle(String token, String licenseType, String licenseNum, String illegalClass, List<String> poIntegers, String month,Page page);


	/**
	 * 导出非法营运车的分析结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param illegalClass 非法营运分类
	 * @param poIntegers 活跃区域，以数组表示的点位集合
	 * @param month  分析起止日期
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; IllegalTaxiVehicleDto &gt; ：包含非法营运车信息 的集合
	 */
	public ResultPojo expIllegalTaxiVehicle(String token, String licenseType, String licenseNum, String illegalClass, List<String> poIntegers, String month);
	public ResultPojo expIllegalTaxiVehicle(String token, String licenseType, String licenseNum, String illegalClass, List<String> poIntegers, String month,int startIndex,int endIndex);

	/**
	 * 非法营运车的分析结果 总记录数
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param illegalClass 非法营运分类
	 * @param poIntegers 活跃区域，以数组表示的点位集合
	 * @param month  分析起止日期
	 * @return 总记录数
	 */
	public ResultPojo countIllegalTaxiVehicle(String token, String licenseType, String licenseNum, String illegalClass, List<String> poIntegers, String month);

	/**
	 * 对非法营运车进行分析并获取结果
	 *
	 * @param licenseType  号牌类型 String 可为null
	 * @param licenseNum   号牌号码 String 可为null
	 * @param illegalClass 非法营运分类 String 可为null （默认"0"）
	 * @param date        分析时间 String   不可为null
	 * @param page         Page  不可为null
	 * @return List<IllegalTaxiVehicle> 包含非法营运车信息的List集合
	 */
	public ResultPojo  getIllegalTaxiVehicleNew(String token,String licenseType, String licenseNum, String illegalClass,
								  String date, Page page);

	/**
	 * 导出非法营运车的分析结果
	 *
	 * @param licenseType  号牌类型
	 * @param licenseNum   号牌号码
	 * @param illegalClass 非法营运分类
	 * @param date        分析时间  不可为null
	 * @param startData    导出起始范围，最小为1
	 * @param endData      导出结束范围
	 * @return List<IllegalTaxiVehicle>：包含非法营运车信息的List集合
	 */
	public  ResultPojo expIllegalTaxiVehicleNew(String token,String licenseType, String licenseNum, String illegalClass,
													  String date, int startData, int endData);

	/**
	 * 导出非法营运车获取记录数
	 *
	 * @param licenseType
	 * @param licenseNum
	 * @param illegalClass
	 * @param date
	 * @return
	 */
	public ResultPojo getIllegalTaxiVehicleCountNew(String token,String licenseType, String licenseNum, String illegalClass,
									  String date);

	/**
	 * 非法营运车的活跃点位
	 * 由于用于精确查找，因此所有参数均不能为空
	 *
	 * @param date        时间
	 * @param licenseType 号牌类型
	 * @param licenseNum  号牌号码
	 * @return
	 */
	public  ResultPojo getIllegalVehiclePoint(String token,String date, String licenseType, String licenseNum);

	/**
	 * 非法营运车的活跃时段
	 * 由于用于精确查找，因此所有参数均不能为空
	 *
	 * @param date        时间
	 * @param licenseType 号牌类型
	 * @param licenseNum  号牌号码
	 * @return
	 */
	public ResultPojo getIllegalVehiclePeriod(String token,String date, String licenseType, String licenseNum);

	/**
	 *车辆日均次数查询
	 * @param bdate
	 * @param edate
	 * @param licenseType
	 * @param licenseNum
	 * @return
	 */
	public ResultPojo getIllegalVehicleAvgDayFreq(String token,String bdate, String edate, String licenseType, String licenseNum);
}
